/**
 * Registry.h
 *
 *  Created on: 27/12/2009
 *      Author: San Martín, Matías I.
 */

#ifndef REGISTRY_H_
#define REGISTRY_H_

#include "../../Framework/Common/TemplateSingleton.h"
#include "../Infraestructura/Directorio.h"

namespace aplicacion {

//Registry es un singleton
class Registry;
typedef SingletonTemplate<Registry> RegistrySingleton;

/**
 * Patrón Registry
 *
 * Permite obtener referencias a objetos de acceso global.
 */
class Registry : private Singleton
{
//------------------------------ CONSTANTES ------------------------------
public:

//------------------------------ ATRIBUTOS ------------------------------
private:
	/** Directorio de la aplicación */
	Directorio* _directorio;

//------------------------------ METODOS ------------------------------
public:
	Registry();
	virtual ~Registry();

	/**
	 * Asocia el 'registro' a this.
	 * Esta se encargara de eliminar la intstancia del 'registro' cuando
	 * deje de usarse
	 *
	 * @throw ParametroInvalidoExcepcion* si el registro es NULL
	 */
	void setDirectorio(Directorio* directorio);

	Directorio& getDirectorio();

private:
};

}  // namespace aplicacion

#endif /* REGISTRY_H_ */
